package com.briup.day03;

import java.util.Scanner;

public class Homework2 {
    public static void main(String[] args) {
        // 打印一个菱形
        // 使用*打印一个直角三角形，高为5的直角三角形
        // 外层循环控制行输出
        for (int i = 0; i < 5; i++) {
            // 内层循环控制列的输出
            for (int j = 0; j <= i; j++) {
                // print()方法是输出内容，println()方法是输出内容并换行
                System.out.print("*");
            }
            // 每一行的列数据输出完毕后，开启新行
            System.out.println();
        }
        // 输出一个等腰三角形，高度为5
        int n = 5;
        // 打印上半部分
        for (int i = 1; i <= n; i++) {
            print(n, i);
        }
        // 打印下半部分
        for (int i = n - 1; i > 0; i--) {
            print(n, i);
        }
    }

    // 编写一个方法，封装打印等腰三角形图案的功能实现代码
    private static void print(int n, int i) {
        // 控制每一行中 * 所在的位置，如第一行中，
        // 如果*要在最中间，那么需要打印n-i次" "
        for (int j = 1; j <= n - i; j++) {
            System.out.print(" ");
        }
        // 控制每一行中*的输出，因为打印的是等腰三角形，
        // 所以每一行*的个数与行数的关系为：2*i-1，i为行数
        for (int j = 1; j <= 2 * i - 1; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

    private static void test() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个自然数:");
        int num = sc.nextInt();
        // 编写代码逻辑判断该数是否为完全数
        int total = 1;
        // 时间复杂度：O(n) = n ===> O(n) = log2n
        for (int i = 2; i <= Math.sqrt(num); i++) {
            // 求取num的所有因数，与total进行求和
            if (num % i == 0) {
                total += i;
                // 当一个表达式中存在赋值运算符和其他运算符时，
                // 会先执行其他运算符，在执行赋值运算符
                total += num / i;
            }
        }
        System.out.printf("自然数%s%s完全数", num,
                total == num ? "是" : "不是");
    }
}
